package com.init.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Utils{

    // 将字符串转换成MD5值
    public static String getMD5(String input) {
        try {
            // 创建MD5 MessageDigest 实例
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 计算MD5函数
            md.update(input.getBytes());

            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
            byte[] digest = md.digest();

            // 将得到的MD5值转换为16进制字符串返回
            StringBuilder hexString = new StringBuilder();
            for (int i = 0; i < digest.length; i++) {
                String hex = Integer.toHexString(0xff & digest[i]);
                if (hex.length() == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}
